import java.util.HashMap;

public class subarraySum {
    /**
     * 和为k的子数组
     * 给你一个整数数组nums和一个整数k，统计返回数组中和为k的子数组个数
     * 子数组是数组中元素的连续非空序列
     */
    // 注意统计的是连续非空的序列
    public static int method(int[] nums, int k){
            HashMap<Integer, Integer> map=new HashMap<>();
            int pre = 0;
            int res = 0;
            map.put(0, 1);
            for(int num : nums){
                pre +=num;
                if(map.containsKey(pre-k)){
                    res+=map.get(pre - k);
                }
                map.put(pre, map.getOrDefault(pre, 0)+1);
            }
            return res;
    }

    public static void main(String[] args) {
        int[] nums={3,2,1,4,5,3,6,5,4,7,8,6,5,4};
        int k=5;
        System.out.println(method(nums,k));
    }
}
